package cn.doitedu;

/**
 * 定义一个类，
 * 对外提供如下功能：
 * 可以按需添加和保存很多个整数，
 * 获取指定脚标位置的元素
 * 移除指定脚标位置的元素
 * 判断是否存在指定的元素
 * 返回指定元素所在位置的脚标
 */
public class DoitList {

    private int[] dataArr = new int[10];

    private int index = 0;

    // 可以按需添加元素
    public void addElement(int ele) {

        dataArr[index] = ele;

        index++;

        // 如果index已经等于数组的长度了，没法再添加新的数据了，需要扩容
        if (index >= dataArr.length) {
            // 创建一个容量更大的数组
            int[] tmpArr = new int[20];
            // 把老数组的数据拷贝到这个新数组
            copyData(dataArr, tmpArr);
            // 将成员数组重新指向 新数组
            dataArr = tmpArr;
        }

    }


    // 获取指定脚标位置的元素
    public int getElement(int idx) {
        if (idx < index) {
            // 返回指定位置的元素
            return dataArr[idx];
        } else {
            // 否则扔给调用者一个异常
            throw new RuntimeException("你有病，去医院");
        }

    }


    // 两个数组拷贝数据的方法
    private void copyData(int[] src, int[] dest) {
        for (int i = 0; i < src.length; i++) {
            dest[i] = src[i];
        }
    }


}
